package com.lianxian.xindong.life.fragment;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;

import com.desmond.citypicker.bean.BaseCity;
import com.desmond.citypicker.bin.CityPicker;
import com.desmond.citypicker.callback.IOnCityPickerCheckedCallBack;
import com.hxb.library.base.BaseLazyLoadFragment;
import com.hxb.library.di.component.AppComponent;
import com.hxb.library.utils.LogUtils;
import com.lianxian.xindong.life.R;
import com.lianxian.xindong.life.R2;
import com.lianxian.xindong.life.activity.FoodActivity;
import com.lianxian.xindong.life.adapter.FoodAdapter;
import com.lianxian.xindong.life.entities.Food;
import com.lianxian.xindong.life.entities.MenuPicAndName;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import cn.mtjsoft.www.gridviewpager_recycleview.GridViewPager;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * A simple {@link Fragment} subclass.
 * Use the {@link LocalLifeFragment#newInstance} factory method to
 * create an instance of this fragment.
 */
public class LocalLifeFragment extends BaseLazyLoadFragment {

    @BindView(R2.id.grid_view_pager)
    GridViewPager gridViewPager;
    @BindView(R2.id.food_grid_view)
    GridView gridView;
    @BindView(R2.id.city_select_location)
    ImageView citySelectIV;
    @BindView(R2.id.city_name_show)
    TextView cityNameTV;

    private List<Food> foodList;
    private List<MenuPicAndName> list;

    public static LocalLifeFragment newInstance() {
        LocalLifeFragment fragment = new LocalLifeFragment();
        return fragment;
    }

    @Override
    public void setupFragmentComponent(@NonNull AppComponent appComponent) {

    }

    @Override
    public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_local_life, container, false);
    }

    @Override
    public void initData(@Nullable Bundle savedInstanceState) {
    }

    @Override
    public void setData(@Nullable Object data) {

    }

    @Override
    protected void lazyLoadData() {
        LogUtils.debugInfo("进来了吗：" + getClass());
        initData();
        gridViewPager
                // 设置数据总数量
                .setDataAllCount(list.size())
                // 设置背景色，默认白色
//                .setGridViewPagerBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white))
                // 设置item的纵向间距
                .setVerticalSpacing(10)
                // 设置上边距
                .setPagerMarginTop(10)
                // 设置下边距
                .setPagerMarginBottom(10)
                // 设置图片宽度
                .setImageWidth(26)
                // 设置图片高度
                .setImageHeight(29)
                // 设置文字与图片的间距
                .setTextImgMargin(5)
                // 设置文字颜色
                .setTextColor(ContextCompat.getColor(getActivity(), R.color.white))
                // 设置文字大小
                .setTextSize(12)
                .setTextColor(Color.BLACK)
                // 设置每页行数
                .setRowCount(2)
                // 设置每页列数
                .setColumnCount(5)
                // 设置是否显示指示器
                .setPointIsShow(true)
                // 设置指示器与page的间距
                .setPointMarginPage(10)
                // 设置指示器与底部的间距
                .setPointMarginBottom(10)
                // 设置指示器的item宽度
                .setPointChildWidth(8)
                // 设置指示器的item高度
                .setPointChildHeight(8)
                // 设置指示器的item的间距
                .setPointChildMargin(8)
                // 指示器的item是否为圆形，默认圆形直径取宽高的最小值
                .setPointIsCircle(true)
                // 指示器item未选中的颜色
                .setPointNormalColor(ContextCompat.getColor(getActivity(), R.color.toast_bg))
                // 指示器item选中的颜色
                .setPointSelectColor(ContextCompat.getColor(getActivity(), R.color.main))
                // 设置背景图片(此时设置的背景色无效，以背景图片为主)
//                .setBackgroundImageLoader(new GridViewPager.BackgroundImageLoaderInterface() {
//                    @Override
//                    public void setBackgroundImg(ImageView bgImageView) {
//
//                    }
//                })
                // 数据绑定
                .setImageTextLoaderInterface(new GridViewPager.ImageTextLoaderInterface() {
                    @Override
                    public void displayImageText(ImageView imageView, TextView textView, int position) {
                        // 自己进行数据的绑定，灵活度更高，不受任何限制
                        imageView.setImageResource(list.get(position).getPicResourceId());
                        textView.setText(list.get(position).getName());
                    }
                })
                // Item点击
                .setGridItemClickListener(new GridViewPager.GridItemClickListener() {
                    @Override
                    public void click(int position) {
                        Toast.makeText(getActivity(), "点击了" + list.get(position).getName() + position, Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(getActivity(), FoodActivity.class);
                        startActivity(intent);
                    }
                })
                .show();

        FoodAdapter foodAdapter = new FoodAdapter(getActivity(), foodList);
        gridView.setAdapter(foodAdapter);
        citySelectIV.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CityPicker.with(getActivity())

                        //是否需要显示当前城市,如果为false那么就隐藏当前城市，并且调用setGpsCityByBaidu()或setGpsCityByAMap()都不会生效，非必选项,默认为true
                        .setUseGpsCity(true)

                        //自定义热门城市，输入数据库中的城市id（_id），非必选项，默认为数据库中的热门城市
//                        .setHotCitiesId("2", "9", "18", "11", "66", "1", "80", "49", "100")

                        //设置最多显示历史点击城市数量，0为不显示历史城市
                        .setMaxHistory(6)

                        // 自定义城市基础数据列表，必须放在项目的assets文件夹下，并且表结构同citypicker项目下的assets中的数据库表结构相同
                        // 该方法当前为beta版本，不推荐使用
//        .setCustomDBName("xx.sqlite")

                        // 设置标题栏背景，非必选项
        .setTitleBarDrawable(R.drawable.bg_life_root_view)

                        // 设置返回按钮图片，非必选项
//        .setTitleBarBackBtnDrawable(...)

                        // 设置搜索框背景，非必选项
//        .setSearchViewDrawable(...)
//
//                // 设置搜索框字体颜色，非必选项
//        .setSearchViewTextColor(...);
//
//                // 设置搜索框字体大小，非必选项
//        .setSearchViewTextSize(...);
//
//                // 设置右边检索栏字体颜色，非必选项
        .setIndexBarTextColor(R.color.main)
//
//                // 设置右边检索栏字体大小，非必选项
//        .setIndexBarTextSize(...);

                        // 是否使用沉浸式状态栏，默认使用，非必选项
                        .setUseImmerseBar(false)

                        // 回调
                        .setOnCityPickerCallBack(new IOnCityPickerCheckedCallBack()
                        {
                            @Override
                            public void onCityPickerChecked(BaseCity baseCity)
                            {
                                //获取选择城市编码
                                baseCity.getCodeByBaidu();  //baseCity.getCodeByAMap();//高德code

                                //获取选择城市名称
                                baseCity.getCityName();

                                // 获取选择城市拼音全拼
                                baseCity.getCityPinYin();

                                //获取选择城市拼音首字母
                                baseCity.getCityPYFirst();
                                cityNameTV.setText(baseCity.getCityName());
                            }
                        })
                        .open();

            }
        });
    }

    private void initData() {
        list = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            MenuPicAndName menuPicAndName = new MenuPicAndName(R.mipmap.xst_group_130, "KTV");
            list.add(menuPicAndName);
        }
        foodList = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            Food food = new Food("去天空bar", "https://img1.baidu.com/it/u=658022473,3534040419&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800"
                    , "法式龙虾的吃法，烤箱龙虾尾", "小狄", "https://lmg.jj20.com/up/allimg/tp05/1910022110294Z2-0-lp.jpg", false, 60, 9);
            foodList.add(food);
            food = null;
        }
    }

}